/**
 * Software License, Version 1.0
 * 
 * Copyright 2003 The Trustees of Indiana University.  All rights reserved.
 * 
 *
 *Redistribution and use in source and binary forms, with or without 
 *modification, are permitted provided that the following conditions are met:
 *
 *1) All redistributions of source code must retain the above copyright notice,
 * the list of authors in the original source code, this list of conditions and
 * the disclaimer listed in this license;
 *2) All redistributions in binary form must reproduce the above copyright 
 * notice, this list of conditions and the disclaimer listed in this license in
 * the documentation and/or other materials provided with the distribution;
 *3) Any documentation included with all redistributions must include the 
 * following acknowledgement:
 *
 *"This product includes software developed by the Community Grids Lab. For 
 * further information contact the Community Grids Lab at 
 * http://communitygrids.iu.edu/."
 *
 * Alternatively, this acknowledgement may appear in the software itself, and 
 * wherever such third-party acknowledgments normally appear.
 * 
 *4) The name Indiana University or Community Grids Lab or NaradaBrokering, 
 * shall not be used to endorse or promote products derived from this software 
 * without prior written permission from Indiana University.  For written 
 * permission, please contact the Advanced Research and Technology Institute 
 * ("ARTI") at 351 West 10th Street, Indianapolis, Indiana 46202.
 *5) Products derived from this software may not be called NaradaBrokering, 
 * nor may Indiana University or Community Grids Lab or NaradaBrokering appear
 * in their name, without prior written permission of ARTI.
 * 
 *
 * Indiana University provides no reassurances that the source code provided 
 * does not infringe the patent or any other intellectual property rights of 
 * any other entity.  Indiana University disclaims any liability to any 
 * recipient for claims brought by any other entity based on infringement of 
 * intellectual property rights or otherwise.  
 *
 *LICENSEE UNDERSTANDS THAT SOFTWARE IS PROVIDED "AS IS" FOR WHICH NO 
 *WARRANTIES AS TO CAPABILITIES OR ACCURACY ARE MADE. INDIANA UNIVERSITY GIVES
 *NO WARRANTIES AND MAKES NO REPRESENTATION THAT SOFTWARE IS FREE OF 
 *INFRINGEMENT OF THIRD PARTY PATENT, COPYRIGHT, OR OTHER PROPRIETARY RIGHTS. 
 *INDIANA UNIVERSITY MAKES NO WARRANTIES THAT SOFTWARE IS FREE FROM "BUGS", 
 *"VIRUSES", "TROJAN HORSES", "TRAP DOORS", "WORMS", OR OTHER HARMFUL CODE.  
 *LICENSEE ASSUMES THE ENTIRE RISK AS TO THE PERFORMANCE OF SOFTWARE AND/OR 
 *ASSOCIATED MATERIALS, AND TO THE PERFORMANCE AND VALIDITY OF INFORMATION 
 *GENERATED USING SOFTWARE.
 */
/**
 * Software License, Version 1.0
 *
 * Copyright 2003 The Trustees of Indiana University.  All rights reserved.
 *
 *
 *Redistribution and use in source and binary forms, with or without
 *modification, are permitted provided that the following conditions are met:
 *
 *1) All redistributions of source code must retain the above copyright notice,
 * the list of authors in the original source code, this list of conditions and
 * the disclaimer listed in this license;
 *2) All redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the disclaimer listed in this license in
 * the documentation and/or other materials provided with the distribution;
 *3) Any documentation included with all redistributions must include the
 * following acknowledgement:
 *
 *"This product includes software developed by the Community Grids Lab. For
 * further information contact the Community Grids Lab at
 * http://communitygrids.iu.edu/."
 *
 * Alternatively, this acknowledgement may appear in the software itself, and
 * wherever such third-party acknowledgments normally appear.
 *
 *4) The name Indiana University or Community Grids Lab or NaradaBrokering,
 * shall not be used to endorse or promote products derived from this software
 * without prior written permission from Indiana University.  For written
 * permission, please contact the Advanced Research and Technology Institute
 * ("ARTI") at 351 West 10th Street, Indianapolis, Indiana 46202.
 *5) Products derived from this software may not be called NaradaBrokering,
 * nor may Indiana University or Community Grids Lab or NaradaBrokering appear
 * in their name, without prior written permission of ARTI.
 *
 *
 * Indiana University provides no reassurances that the source code provided
 * does not infringe the patent or any other intellectual property rights of
 * any other entity.  Indiana University disclaims any liability to any
 * recipient for claims brought by any other entity based on infringement of
 * intellectual property rights or otherwise.
 *
 *LICENSEE UNDERSTANDS THAT SOFTWARE IS PROVIDED "AS IS" FOR WHICH NO
 *WARRANTIES AS TO CAPABILITIES OR ACCURACY ARE MADE. INDIANA UNIVERSITY GIVES
 *NO WARRANTIES AND MAKES NO REPRESENTATION THAT SOFTWARE IS FREE OF
 *INFRINGEMENT OF THIRD PARTY PATENT, COPYRIGHT, OR OTHER PROPRIETARY RIGHTS.
 *INDIANA UNIVERSITY MAKES NO WARRANTIES THAT SOFTWARE IS FREE FROM "BUGS",
 *"VIRUSES", "TROJAN HORSES", "TRAP DOORS", "WORMS", OR OTHER HARMFUL CODE.
 *LICENSEE ASSUMES THE ENTIRE RISK AS TO THE PERFORMANCE OF SOFTWARE AND/OR
 *ASSOCIATED MATERIALS, AND TO THE PERFORMANCE AND VALIDITY OF INFORMATION
 *GENERATED USING SOFTWARE.
 */
package cgl.narada.gui.admin.reliable.viewtable;

import javax.swing.JLabel;

import cgl.narada.event.TemplateInfo;
import cgl.narada.gui.admin.reliable.UserConfigure;
import cgl.narada.service.storage.StorageService;
import cgl.narada.service.storage.StorageServiceFactory;
import cgl.narada.service.storage.db.DataAccessObject;
import cgl.narada.service.storage.db.DatabaseFactory;
import cgl.narada.service.storage.db.DatabaseStatements;

public class InventoryNbTableModel extends NbTableModel {
	private DatabaseStatements	statements	= DatabaseStatements.getInstance();
	private boolean							initialized	= false;

	public InventoryNbTableModel() {

		columnData = new ColumnData[3];
		columnData[0] = new ColumnData("Sequence Number", 200, JLabel.LEFT);
		columnData[1] = new ColumnData("Previous Sequence Number", 200, JLabel.LEFT);
		columnData[2] = new ColumnData("Template ID", 200, JLabel.LEFT);
	}

	public Object getValueAt(int rowNum, int columnNum) {
		if (rowNum < 0 || rowNum >= getRowCount()) {
			return "";
		}
		InventoryRowData row = (InventoryRowData) allRow.elementAt(rowNum);
		switch (columnNum) {
			case 0:
				return row.sequenceNumber;
			case 1:
				return row.previousSequenceNumber;
			case 2:
				return row.templateId;
		}
		return "";
	}

	/*
	 public void setDefaultData(){
	 allRow.removeAllElements();
	 allRow.addElement(new InventoryRowData("12345","12344", "66"));
	 }
	 */

	public void setDefaultData() {
		allRow.removeAllElements();
		System.out.println("$$$$$$$ impl=" + impl);
		if (impl.equals("db")) {
			try {
				// DataAccessObject dao = new DataAccessObject();
				DataAccessObject dao = null;

				DatabaseFactory df = new DatabaseFactory();
				try {
					dao = df.getDAO();
					statements = DatabaseStatements.getInstance();
					statements.initialize(dao.getConnection(), dao);
				} catch (Exception ex) {
					System.out.println("exception in creating DataAccessObject ");
				}
				StorageService storageService = StorageServiceFactory
						.getStorageService("db", UserConfigure.getProperties());
				TemplateInfo[] templateInfos = storageService
						.getListOfManagedTemplates();
				for (int i = 0; i < templateInfos.length; i++) {
					TemplateInfo oneTemplate = templateInfos[i];
					//					String query = " select sequenceNumber, previousSequenceNumber, templateId from InventoryLight "
					//							+ "where templateId="+oneTemplate.getTemplateId()+" limit 0,100;";
					//					java.sql.ResultSet rs = dao.executePreparedQuery(query);
					java.sql.ResultSet rs = statements
							.executeInventoryLightCompleteRowStmt(""
									+ oneTemplate.getTemplateId());

					while (rs.next()) {
						allRow.add(new InventoryRowData(rs.getString(1), rs.getString(2),
								rs.getString(3)));
					}

					//					String query2 = " select sequenceNumber, previousSequenceNumber, templateId from InventoryLight "
					//							+ "where templateId="+oneTemplate.getTemplateId()+" order by sequenceNumber desc limit 0,100;";
					//					java.sql.ResultSet rs2 = dao.executePreparedQuery(query2);
					java.sql.ResultSet rs2 = statements
							.executeInventoryLightCompleteRowDESCStmt(""
									+ oneTemplate.getTemplateId());
					while (rs2.next()) {
						allRow.add(new InventoryRowData(rs2.getString(1), rs2.getString(2),
								rs2.getString(3)));
					}
					rs.close();
					rs2.close();

				}

				//        String query = " select sequenceNumber, previousSequenceNumber, templateId from InventoryLight;";
				//				String query = " select sequenceNumber, previousSequenceNumber, templateId from InventoryLight "
				//						+ "order by sequenceNumber desc limit 0,100;";
				//				java.sql.ResultSet rs = dao.executePreparedQuery(query);
				//				while (rs.next()) {
				//					allRow.add(new InventoryRowData(rs.getString(1), rs.getString(2), rs
				//							.getString(3)));
				//				}
			} catch (Exception e) {
				e.printStackTrace();
				System.out.println("exception happen during create DataAccessObject");
			}
		} else if (impl.equals("file")) {
			new FileStorageGuiHelp().fetchInventory(allRow);
		}
	}

}